package vip.aster.workflow.service;


import vip.aster.common.utils.PageInfo;
import vip.aster.workflow.dto.*;
import vip.aster.workflow.entity.DataColum;

import java.util.List;
import java.util.Map;

/**
 * 动态表单业务接口类
 */
public interface DataSourceService {

    /**
     * 执行sql
     *
     * @param sql sql语句
     */
    void execute(String sql);

    /**
     * 查询数据列信息
     *
     * @param columnDto 查询条件
     * @return 数据库表列信息
     */
    List<DataColum> listColumn(ColumnDto columnDto);

    /**
     * 添加列信息
     *
     * @param addColumnDto 添加列对象
     */
    void addVarcharColumn(AddColumnDto addColumnDto);

    /**
     * 批量新增列信息
     *
     * @param batchAddColumnDto 列集合
     */
    void batchAddColumnList(BatchAddColumnDto batchAddColumnDto);

    /**
     * 修改列信息
     *
     * @param updateColumnDto 修改列对象
     */
    void updateVarcharColumn(UpdateColumnDto updateColumnDto);

    /**
     * 批量修改列信息
     *
     * @param batchAddColumnDto 列集合
     */
    void batchUpdateColumn(BatchAddColumnDto batchAddColumnDto);

    /**
     * 保存
     *
     * @param dynamicData 动态表和数据
     * @return 成功或失败
     */
    boolean save(DynamicDataDto dynamicData);

    /**
     * 查询动态数据
     *
     * @param dynamicData 动态数据
     * @return 数据集合
     */
    List<Map<String, Object>> select(DynamicDataDto dynamicData);

    /**
     * 分页查询
     *
     * @param query 查询条件
     * @return 数据集合
     */
    PageInfo<Map<String, Object>> selectPage(Map<String, Object> query);


}
